package com.zm.core.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import com.jfinal.kit.JsonKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.zm.core.common.controller.BaseController;
import com.zm.core.model.Comment;
import com.zm.core.model.Logo;
import com.zm.core.model.Product;
import com.zm.core.model.UseLog;
import com.zm.core.model.User;
import com.zm.core.model.Usize;

/**
 * 前台和买家互动的所有方法controller
 *
 * @author 李彤彤
 * @date 2015年10月21日 下午2:49:12
 */
public class FrontController extends BaseController {

	public void test() {
		render("frontpage/test.html");
	}

	public void getSizeByLogo() {
		String logoid = getPara("logo");
		String sex = getSessionAttr("sex");
		String style = getSessionAttr("style");
		List<Logo> list = Logo.dao
				.find("SELECT s.french_size from d_logo l left join d_size s on l.id=s.logo_id where l.id=" + logoid
						+ " and sex=" + sex + " and style='运动'");
		renderText(JsonKit.toJson(list));
	}
	
	public void getSizeByLogoForNoSport() {
		String logoid = getPara("logo");
		String sex = getSessionAttr("sex");
		String style = getSessionAttr("style");
		List<Logo> list = Logo.dao
				.find("SELECT s.french_size from d_logo l left join d_size s on l.id=s.logo_id where l.id=" + logoid
						+ " and sex=" + sex + " and style='非运动'");
		renderText(JsonKit.toJson(list));
	}

	public void checkLogo() {
		String step = getPara("step");
		String logoid1 = getSessionAttr("logo1");
		String logoid2 = getSessionAttr("logo2");
		String logoid3 = getSessionAttr("logo3");
		String logoid = getPara("logo");
		if (step.equals("1")) {
			if ((logoid2 != null && logoid2.equals(logoid)) || (logoid3 != null && logoid3.equals(logoid))) {
				renderText("0");
			} else {
				renderText("1");
			}
		} else if (step.equals("2")) {
			if ((logoid1 != null && logoid1.equals(logoid)) || (logoid3 != null && logoid3.equals(logoid))) {
				renderText("0");
			} else {
				renderText("1");
			}
		} else {
			if ((logoid1 != null && logoid1.equals(logoid)) || (logoid2 != null && logoid2.equals(logoid))) {
				renderText("0");
			} else {
				renderText("1");
			}
		}

	}
	
	public double getBig(double a,double b){
		if (a<=b)
			return b;
		else
			return a;
	}
	public double getSmall(double a,double b){
		if (a<=b)
			return a;
		else
			return b;
	}
	public double getSmall(double a,double b,double c){
		double s;
		if (a<=b) {
			s=a;
			if (c<a) {
				s=c;
			}
		}else{
			s=b;
			if (c<b) {
				s=c;
			}
		}
		return s;
	}

	


	/**
	 * 跳轉到选择品牌的页面，已作废
	 */
	public void index() {
		double resultsize = 0;// 测出的长度
		// int result=0;//最终鞋码
		String msg = "y";
		String productid = getSessionAttr("productid");
		// 商品默认的性别
		String sex = getSessionAttr("sex");
		if (null != sex && sex.equals("0")) {
			setAttr("sex", "0");
		} else {
			setAttr("sex", "1");
		}

		String style = getSessionAttr("style");
		if (null != style && style.equals("运动")) {
			setAttr("style", "1");
		} else {
			style = "非运动";
			setAttr("style", "2");
		}

		// 脚型
		String foottype = getSessionAttr("foottype");
		if (null != getPara("foottype") && !getPara("foottype").equals("")) {
			setSessionAttr("foottype", getPara("foottype"));
			foottype = getSessionAttr("foottype");
		}

		// 选择的品牌
		String step = getPara("step");// 三个品牌的第几个
		String logo = getPara("logo");
		String size = getPara("size");
		if (null != step && !step.equals("") && null != logo && !logo.equals("") && null != size && !size.equals("")) {
			setSessionAttr("logo" + step, logo);
			setSessionAttr("size" + step, size);
		}

		// 取得已经选择的存放session的品牌
		String logoid1 = getSessionAttr("logo1");
		String logoid2 = getSessionAttr("logo2");
		String logoid3 = getSessionAttr("logo3");
		String size1 = getSessionAttr("size1");
		String size2 = getSessionAttr("size2");
		String size3 = getSessionAttr("size3");
		Logo logo1 = null;
		Logo logo2 = null;
		Logo logo3 = null;
		if (null != style && style.equals("运动")) {
			if (null != logoid1 && !logoid1.equals("")) {
				logo1 = Logo.dao.findFirst(
						"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
								+ logoid1 + " and s.french_size=" + size1 + " and s.sex='" + sex
								+ "' and s.style='运动' ");
				setAttr("logo1", logo1);
			}
			if (null != logoid2 && !logoid2.equals("")) {
				logo2 = Logo.dao.findFirst(
						"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
								+ logoid2 + " and s.french_size=" + size2 + " and s.sex='" + sex + "' and s.style='"
								+ style + "' ");
				setAttr("logo2", logo2);
			}
			if (null != logoid3 && !logoid3.equals("")) {
				logo3 = Logo.dao.findFirst(
						"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
								+ logoid3 + " and s.french_size=" + size3 + " and s.sex='" + sex + "' and s.style='"
								+ style + "' ");
				setAttr("logo3", logo3);
			}
		} else {
			if (null != logoid1 && !logoid1.equals("")) {
				logo1 = Logo.dao.findFirst(
						"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
								+ logoid1 + " and s.french_size=" + size1 + " and s.sex='" + sex
								+ "' and s.style='运动' ");
				setAttr("logo1", logo1);
			}
			if (null != logoid2 && !logoid2.equals("")) {
				if (foottype != null && (foottype.equals("2") || foottype.equals("4")))// 胖或者宽
					logo2 = Logo.dao.findFirst(
							"SELECT l.id,l.en_name,s.french_size,s.size_low as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
									+ logoid2 + " and s.french_size=" + size2 + " and s.sex='" + sex + "' and s.style='"
									+ style + "' ");
				else
					logo2 = Logo.dao.findFirst(
							"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
									+ logoid2 + " and s.french_size=" + size2 + " and s.sex='" + sex + "' and s.style='"
									+ style + "' ");

				setAttr("logo2", logo2);
			}
			if (null != logoid3 && !logoid3.equals("")) {
				if (foottype != null && (foottype.equals("2") || foottype.equals("4")))// 胖或者宽
					logo3 = Logo.dao.findFirst(
							"SELECT l.id,l.en_name,s.french_size,s.size_low as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
									+ logoid3 + " and s.french_size=" + size3 + " and s.sex='" + sex + "' and s.style='"
									+ style + "' ");
				else
					logo3 = Logo.dao.findFirst(
							"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
									+ logoid3 + " and s.french_size=" + size3 + " and s.sex='" + sex + "' and s.style='"
									+ style + "' ");

				setAttr("logo3", logo3);
			}
		}

		// 判断是否已经选择完成，可以点击下一步

		if (style.equals("运动")) {
			if (logo1 != null && logo2 != null && logo3 != null) {
				if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo2.getBigDecimal("size").doubleValue()) >= 10
						|| Math.abs(logo1.getBigDecimal("size").doubleValue()- logo3.getBigDecimal("size").doubleValue()) >= 10
						|| Math.abs(logo2.getBigDecimal("size").doubleValue()- logo3.getBigDecimal("size").doubleValue()) >= 10) {
					// 报错
					msg = "您选择尺码有误，请重新测试";
				} else {
					resultsize=getSmall(logo1.getBigDecimal("size").doubleValue(), logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue());
				}

			} else if (logo1 != null && logo2 != null) {
				if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo2.getBigDecimal("size").doubleValue()) >= 10) {
					// 报错
					msg = "您选择尺码有误，请重新测试";
				} else {
					resultsize=getSmall(logo1.getBigDecimal("size").doubleValue(), logo2.getBigDecimal("size").doubleValue());
				}
			} else if (logo1 != null && logo3 != null) {
				if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue()) >= 10) {
					// 报错
					msg = "您选择尺码有误，请重新测试";
				} else {
					resultsize=getSmall(logo1.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue());
				}
			} else if (logo2 != null && logo3 != null) {
				if (Math.abs(logo2.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue()) >= 10) {
					// 报错
					msg = "您选择尺码有误，请重新测试";
				} else {
					resultsize=getSmall(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue());
				}
			} else if (logo1 != null) {
				resultsize = logo1.getBigDecimal("size").doubleValue();
			} else if (logo2 != null) {
				resultsize = logo2.getBigDecimal("size").doubleValue();
			} else if (logo3 != null) {
				resultsize = logo3.getBigDecimal("size").doubleValue();
			} else if (logo1 == null && logo2 == null && logo3 == null) {
				// 报未选择
				msg = "您选择尺码有误，请重新测试";
			}

		} else {// 非运动
			if (logo1 == null || logo2 == null || logo3 == null) {
				// 报未选择
				msg = "您选择尺码有误，请重新测试";
			} else if (Math.abs(logo2.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue()) >= 10) {
				// 报错 两个皮鞋差》=10
				msg = "您选择尺码有误，请重新测试";
			} else {
				if (foottype != null && (foottype.equals("2") || foottype.equals("4"))) {// 宽
					//运动鞋和最小皮鞋差值＞15mm，运动鞋和最大皮鞋差值≥15mm ,任意差值＜-5，提示错误。
					if(
						logo1.getBigDecimal("size").doubleValue()-getSmall(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>15
						||logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>=15
						||logo1.getBigDecimal("size").doubleValue()<logo2.getBigDecimal("size").doubleValue()
						||logo1.getBigDecimal("size").doubleValue()<logo3.getBigDecimal("size").doubleValue()
					){
						msg = "您选择尺码有误，请重新测试";
					}
					//三个特殊情况除外，取离运动鞋最近的尺码为最终值
					else if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo2.getBigDecimal("size").doubleValue()) < Math.abs(logo1.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue())) {
						resultsize = logo2.getBigDecimal("size").doubleValue();
					} else {
						resultsize = logo3.getBigDecimal("size").doubleValue();
					}

				} else if (foottype != null && foottype.equals("3")) {// 瘦
					//运动鞋和最小皮鞋差值>10mm，提示错误,与最大皮鞋差值《-5 错误
					if(
						logo1.getBigDecimal("size").doubleValue()-getSmall(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>10
						||logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())<-5
					){
						msg = "您选择尺码有误，请重新测试";
					}
					//如果运动鞋减去 两双皮鞋相加除以2， 0≤差值≤5，选运动鞋长度为最终值
					else if(
						logo1.getBigDecimal("size").doubleValue()-((logo2.getBigDecimal("size").doubleValue()+logo3.getBigDecimal("size").doubleValue())/2)>=0
						&&logo1.getBigDecimal("size").doubleValue()-((logo2.getBigDecimal("size").doubleValue()+logo3.getBigDecimal("size").doubleValue())/2)<=5
					){
						resultsize = logo1.getBigDecimal("size").doubleValue();
					}
					//如果运动鞋减去 两双皮鞋相加除以2， 0≤差值≤5，选运动鞋长度为最终值，如果差值＞5且不触碰错误范围，则取运动鞋长度减5为最终值。
					else if(
							logo1.getBigDecimal("size").doubleValue()-((logo2.getBigDecimal("size").doubleValue()+logo3.getBigDecimal("size").doubleValue())/2)>5
					){
						resultsize = logo1.getBigDecimal("size").doubleValue()-5;
					}
					//如果运动鞋和最大皮鞋差值为负数-5≤差值＜0，按照最大码的皮鞋取值，
					else if(
						logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>=-5
						&&logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())<0
					){
						resultsize = getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue());
					}
					//这里是第一版逻辑
//					else if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo2.getBigDecimal("size").doubleValue()) < Math.abs(logo1.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue())) {
//						resultsize = logo3.getBigDecimal("size").doubleValue();
//					} else {
//						resultsize = logo2.getBigDecimal("size").doubleValue();
//					}

				} else {
					//运动鞋和最小皮鞋差值>10mm，提示错误,如运动鞋减最大皮鞋，出现负值，即提示错误
					if(
						logo1.getBigDecimal("size").doubleValue()-getSmall(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>10
						||logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())<0
					){
						msg = "您选择尺码有误，请重新测试";
					}
					//最终取值，如果遇到运动鞋和两双皮鞋长度全部一样的，那么取该长度即可
					else if(logo1.getBigDecimal("size").doubleValue()==logo2.getBigDecimal("size").doubleValue()&&logo1.getBigDecimal("size").doubleValue()==logo3.getBigDecimal("size").doubleValue()){
						resultsize = logo1.getBigDecimal("size").doubleValue();
					}
					//除此之外选取运动鞋长度减去5mm进行取值
					else{
						resultsize = logo1.getBigDecimal("size").doubleValue()-5;
					}
					
				}
			}

		}
		Product resultproduct = null;
		if (productid != null)
			if (foottype != null && (foottype.equals("2") || foottype.equals("4"))) {// 宽。胖
				resultproduct = Product.dao.findFirst(
						"select (s.french_size+p.foot_stout) as french_size from u_product p left join u_size s on p.product_id=s.product_id where p.product_id='"
								+ productid + "' ORDER BY ABS(s.size-" + resultsize + ") LIMIT 1 ");
			} else if (foottype != null && foottype.equals("3")) {// 瘦
				resultproduct = Product.dao.findFirst(
						"select (s.french_size+p.foot_lean) as french_size from u_product p left join u_size s on p.product_id=s.product_id where p.product_id='"
								+ productid + "' ORDER BY ABS(s.size-" + resultsize + ") LIMIT 1 ");
			} else {// 正常
				resultproduct = Product.dao.findFirst(
						"select (s.french_size+p.foot_normal) as french_size from u_product p left join u_size s on p.product_id=s.product_id where p.product_id='"
								+ productid + "' ORDER BY ABS(s.size-" + resultsize + ") LIMIT 1 ");
			}

		setAttr("msg", msg);
		setSessionAttr("resultsize", resultsize);
		setAttr("productid", productid);

		if (resultproduct!=null) {
			setSessionAttr("result", resultproduct.get("french_size").toString());
		}
		

		render("frontpage/buyerindex.html");
	}

	/**
	 * 到已穿体验
	 */
	public void toFeeling() {
		setAttr("productid", getPara("productid"));
		render("frontpage/feeling.html");
	}

	/**
	 * 跳到选择脚型
	 */
	public void toFoot() {
		String productid = getPara("id");
		String sellerid = getPara("id2");
		if(sellerid!=null){
			setSessionAttr("sellerid", sellerid);
		}
		setSessionAttr("productid", productid);
		String retest = getPara("retest");
		String uuid=getCookie("shoename");
		//String uuid = getuuid(getRequest());
		if (uuid != null && !uuid.equals("") && (retest == null || "".equals(retest))) {//不是重新测试，那么先判断是否有历史记录，有的话直接展示历史测码结果
			Record uselog = Db.findFirst("select * from u_use_log where user='" + uuid + "' order by use_time desc ");
			if (uselog != null) {
				if(uselog.get("size")!=null&&uselog.get("french_size")!=null){
					try {
						setSessionAttr("resultsize", Double.parseDouble(uselog.get("size").toString()));
						setSessionAttr("result", uselog.get("french_size").toString());
						redirect("/front/toResult");
						return;
					} catch (Exception e) {
						// TODO: handle exception
					}
					
				}
			}
		} 

		setAttr("productid", productid);
		Usize product = Usize.dao.findFirst("select * from u_size where product_id=" + productid);
		if (null != product) {
			setSessionAttr("sex", product.get("sex").toString());
			setSessionAttr("style", product.get("style").toString());
		} else {
			setSessionAttr("sex", "1");
			setSessionAttr("style", "运动");
		}
		setCookie("shoename", "",3600*24*7);
		render("frontpage/foot.html");
	


	}

	/**
	 * 到评论
	 */
	public void toComment() {
		String numid = getPara("numid");
		String memo = getPara("memo");
//		try {
//			memo = new String(memo.getBytes("iso-8859-1"), "utf-8");
//		} catch (UnsupportedEncodingException e) {
//			e.printStackTrace();
//		}
		List<Comment> comment = Comment.dao.find(
				"select *,content content1 from u_comment where product_id=" + numid + " and type='" + memo + "'");
		setAttr("commentList", comment);
		setAttr("productid", numid);
		render("frontpage/comment.html");
	}

	/**
	 * 到结果页面
	 */
	public void toResult() {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		
		String productid = getSessionAttr("productid");
		String sellerid = getSessionAttr("sellerid");
		double size = getSessionAttr("resultsize");
		String french_size = getSessionAttr("result");

		User user = null;
		
		String uuid = UUID.randomUUID().toString();
		user = new User();
		user.set("token", uuid);
		user.set("create_time", df.format(new Date()));
		user.save();
		UseLog log = new UseLog();
		log.set("user", uuid);
		log.set("use_time", df.format(new Date()));
		if(sellerid!=null){
			log.set("seller", sellerid);
		}
		log.set("product_id", productid);
		log.set("french_size", Double.valueOf(french_size));
		log.set("size", size);
		log.set("state", 0);
		log.save();
		String[] ss = french_size.split("\\.");
		setAttr("sizes", size);
		setAttr("french_size", ss[0]);
		setAttr("productid", productid);

		setAttr("uuid", uuid);
		setCookie("shoename", uuid, 3600*24*7);
		//查看该商品是否有评价。有评价则可以看评价
		Record comment=Db.findFirst("select * from u_comment where product_id='"+productid+"'");
		setAttr("comment", comment);
		render("frontpage/result.html");
	}
	/**
	 * 获取计算测码结果。成功返回y， 并且将结果记录session，失败返回错误信息
	 */
	public void getResult(){
		String msg = "y";
		String logoid1 = getPara("logo1");
		String logoid2 = getPara("logo2");
		String logoid3 = getPara("logo3");
		String size1 = getPara("size1");
		String size2 = getPara("size2");
		String size3 = getPara("size3");
		
		if(logoid1==null||logoid2==null||logoid3==null||size1==null||size2==null||size3==null){
			msg = "您选择的尺码有空值，请全部选择完成后再测试";
			setAttr("msg", msg);
			renderJson();
			return;
		}
		
		String productid = getSessionAttr("productid");
		// 商品默认的性别
		String sex = getPara("sex");
		// 脚型
		String foottype = getSessionAttr("foottype");
		// 这个商品的类型，运动，非运动
		String style = getSessionAttr("style");
		if (null != style && style.equals("运动")) {
			
		} else {//非运动的，2，3是皮鞋，使用默认品牌。男鞋按照 意尔康，女鞋按照 百丽
			style = "非运动";
			if(sex!=null&&sex.equals("0")){//女
				logoid2="26";
				logoid3="26";
			}else{//男
				sex="1";
				logoid2="43";
				logoid3="43";
			}
		}
		double resultsize = 0;// 测出的长度

		Logo logo1 = null;
		Logo logo2 = null;
		Logo logo3 = null;
		if (null != style && style.equals("运动")) {
			if (null != logoid1 && !logoid1.equals("")) {
				logo1 = Logo.dao.findFirst(
						"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
								+ logoid1 + " and s.french_size=" + size1 + " and s.sex='" + sex
								+ "' and s.style='运动' ");
				setAttr("logo1", logo1);
			}
			if (null != logoid2 && !logoid2.equals("")) {
				logo2 = Logo.dao.findFirst(
						"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
								+ logoid2 + " and s.french_size=" + size2 + " and s.sex='" + sex + "' and s.style='"
								+ style + "' ");
				setAttr("logo2", logo2);
			}
			if (null != logoid3 && !logoid3.equals("")) {
				logo3 = Logo.dao.findFirst(
						"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
								+ logoid3 + " and s.french_size=" + size3 + " and s.sex='" + sex + "' and s.style='"
								+ style + "' ");
				setAttr("logo3", logo3);
			}
		} else {
			if (null != logoid1 && !logoid1.equals("")) {
				logo1 = Logo.dao.findFirst(
						"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
								+ logoid1 + " and s.french_size=" + size1 + " and s.sex='" + sex
								+ "' and s.style='运动' ");
				setAttr("logo1", logo1);
			}
			if (null != logoid2 && !logoid2.equals("")) {
				if (foottype != null && (foottype.equals("2") || foottype.equals("4")))// 胖或者宽
					logo2 = Logo.dao.findFirst(
							"SELECT l.id,l.en_name,s.french_size,s.size_low as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
									+ logoid2 + " and s.french_size=" + size2 + " and s.sex='" + sex + "' and s.style='"
									+ style + "' ");
				else
					logo2 = Logo.dao.findFirst(
							"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
									+ logoid2 + " and s.french_size=" + size2 + " and s.sex='" + sex + "' and s.style='"
									+ style + "' ");

				setAttr("logo2", logo2);
			}
			if (null != logoid3 && !logoid3.equals("")) {
				if (foottype != null && (foottype.equals("2") || foottype.equals("4")))// 胖或者宽
					logo3 = Logo.dao.findFirst(
							"SELECT l.id,l.en_name,s.french_size,s.size_low as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
									+ logoid3 + " and s.french_size=" + size3 + " and s.sex='" + sex + "' and s.style='"
									+ style + "' ");
				else
					logo3 = Logo.dao.findFirst(
							"SELECT l.id,l.en_name,s.french_size,s.size as size from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and l.id="
									+ logoid3 + " and s.french_size=" + size3 + " and s.sex='" + sex + "' and s.style='"
									+ style + "' ");

				setAttr("logo3", logo3);
			}
		}

		// 判断是否已经选择完成，可以点击下一步

		if (style.equals("运动")) {
			if (logo1 != null && logo2 != null && logo3 != null) {
				if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo2.getBigDecimal("size").doubleValue()) >= 10
						|| Math.abs(logo1.getBigDecimal("size").doubleValue()- logo3.getBigDecimal("size").doubleValue()) >= 10
						|| Math.abs(logo2.getBigDecimal("size").doubleValue()- logo3.getBigDecimal("size").doubleValue()) >= 10) {
					// 报错
					msg = "您选择尺码有误，请重新测试";
				} else {
					resultsize=getSmall(logo1.getBigDecimal("size").doubleValue(), logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue());
				}

			} else if (logo1 != null && logo2 != null) {
				if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo2.getBigDecimal("size").doubleValue()) >= 10) {
					// 报错
					msg = "您选择尺码有误，请重新测试";
				} else {
					resultsize=getSmall(logo1.getBigDecimal("size").doubleValue(), logo2.getBigDecimal("size").doubleValue());
				}
			} else if (logo1 != null && logo3 != null) {
				if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue()) >= 10) {
					// 报错
					msg = "您选择尺码有误，请重新测试";
				} else {
					resultsize=getSmall(logo1.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue());
				}
			} else if (logo2 != null && logo3 != null) {
				if (Math.abs(logo2.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue()) >= 10) {
					// 报错
					msg = "您选择尺码有误，请重新测试";
				} else {
					resultsize=getSmall(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue());
				}
			} else if (logo1 != null) {
				resultsize = logo1.getBigDecimal("size").doubleValue();
			} else if (logo2 != null) {
				resultsize = logo2.getBigDecimal("size").doubleValue();
			} else if (logo3 != null) {
				resultsize = logo3.getBigDecimal("size").doubleValue();
			} else if (logo1 == null && logo2 == null && logo3 == null) {
				// 报未选择
				msg = "您选择尺码有误，请重新测试";
			}

		} else {// 非运动
			if (logo1 == null || logo2 == null || logo3 == null) {
				// 报未选择
				msg = "您选择尺码有误，请重新测试";
			} else if (Math.abs(logo2.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue()) >= 10) {
				// 报错 两个皮鞋差》=10
				msg = "您选择尺码有误，请重新测试";
			} else {
				if (foottype != null && (foottype.equals("2") || foottype.equals("4"))) {// 宽
					//运动鞋和最小皮鞋差值＞15mm，运动鞋和最大皮鞋差值≥15mm ,任意差值＜-5，提示错误。
					if(
						logo1.getBigDecimal("size").doubleValue()-getSmall(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>15
						||logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>=15
						||logo1.getBigDecimal("size").doubleValue()<logo2.getBigDecimal("size").doubleValue()
						||logo1.getBigDecimal("size").doubleValue()<logo3.getBigDecimal("size").doubleValue()
					){
						msg = "您选择尺码有误，请重新测试";
					}
					//三个特殊情况除外，取离运动鞋最近的尺码为最终值
					else if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo2.getBigDecimal("size").doubleValue()) < Math.abs(logo1.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue())) {
						resultsize = logo2.getBigDecimal("size").doubleValue();
					} else {
						resultsize = logo3.getBigDecimal("size").doubleValue();
					}

				} else if (foottype != null && foottype.equals("3")) {// 瘦
					//运动鞋和最小皮鞋差值>10mm，提示错误,与最大皮鞋差值《-5 错误
					if(
						logo1.getBigDecimal("size").doubleValue()-getSmall(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>10
						||logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())<-5
					){
						msg = "您选择尺码有误，请重新测试";
					}
					//如果运动鞋减去 两双皮鞋相加除以2， 0≤差值≤5，选运动鞋长度为最终值
					else if(
						logo1.getBigDecimal("size").doubleValue()-((logo2.getBigDecimal("size").doubleValue()+logo3.getBigDecimal("size").doubleValue())/2)>=0
						&&logo1.getBigDecimal("size").doubleValue()-((logo2.getBigDecimal("size").doubleValue()+logo3.getBigDecimal("size").doubleValue())/2)<=5
					){
						resultsize = logo1.getBigDecimal("size").doubleValue();
					}
					//如果运动鞋减去 两双皮鞋相加除以2， 0≤差值≤5，选运动鞋长度为最终值，如果差值＞5且不触碰错误范围，则取运动鞋长度减5为最终值。
					else if(
							logo1.getBigDecimal("size").doubleValue()-((logo2.getBigDecimal("size").doubleValue()+logo3.getBigDecimal("size").doubleValue())/2)>5
					){
						resultsize = logo1.getBigDecimal("size").doubleValue()-5;
					}
					//如果运动鞋和最大皮鞋差值为负数-5≤差值＜0，按照最大码的皮鞋取值，
					else if(
						logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>=-5
						&&logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())<0
					){
						resultsize = getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue());
					}
					//这里是第一版逻辑
//					else if (Math.abs(logo1.getBigDecimal("size").doubleValue() - logo2.getBigDecimal("size").doubleValue()) < Math.abs(logo1.getBigDecimal("size").doubleValue() - logo3.getBigDecimal("size").doubleValue())) {
//						resultsize = logo3.getBigDecimal("size").doubleValue();
//					} else {
//						resultsize = logo2.getBigDecimal("size").doubleValue();
//					}

				} else {
					//运动鞋和最小皮鞋差值>10mm，提示错误,如运动鞋减最大皮鞋，出现负值，即提示错误
					if(
						logo1.getBigDecimal("size").doubleValue()-getSmall(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())>10
						||logo1.getBigDecimal("size").doubleValue()-getBig(logo2.getBigDecimal("size").doubleValue(), logo3.getBigDecimal("size").doubleValue())<0
					){
						msg = "您选择尺码有误，请重新测试";
					}
					//最终取值，如果遇到运动鞋和两双皮鞋长度全部一样的，那么取该长度即可
					else if(logo1.getBigDecimal("size").doubleValue()==logo2.getBigDecimal("size").doubleValue()&&logo1.getBigDecimal("size").doubleValue()==logo3.getBigDecimal("size").doubleValue()){
						resultsize = logo1.getBigDecimal("size").doubleValue();
					}
					//除此之外选取运动鞋长度减去5mm进行取值
					else{
						resultsize = logo1.getBigDecimal("size").doubleValue()-5;
					}
					
				}
			}

		}
		Product resultproduct = null;
		if (productid != null)
			if (foottype != null && (foottype.equals("2") || foottype.equals("4"))) {// 宽。胖
				resultproduct = Product.dao.findFirst(
						"select (s.french_size+p.foot_stout) as french_size from u_product p left join u_size s on p.product_id=s.product_id where p.product_id='"
								+ productid + "' ORDER BY ABS(s.size-" + resultsize + ") LIMIT 1 ");
			} else if (foottype != null && foottype.equals("3")) {// 瘦
				resultproduct = Product.dao.findFirst(
						"select (s.french_size+p.foot_lean) as french_size from u_product p left join u_size s on p.product_id=s.product_id where p.product_id='"
								+ productid + "' ORDER BY ABS(s.size-" + resultsize + ") LIMIT 1 ");
			} else {// 正常
				resultproduct = Product.dao.findFirst(
						"select (s.french_size+p.foot_normal) as french_size from u_product p left join u_size s on p.product_id=s.product_id where p.product_id='"
								+ productid + "' ORDER BY ABS(s.size-" + resultsize + ") LIMIT 1 ");
			}

		setSessionAttr("resultsize", resultsize);
		setAttr("productid", productid);

		if (resultproduct!=null) {
			setSessionAttr("result", resultproduct.get("french_size").toString());
		}
		setAttr("msg", msg);
		renderJson();
	
	}
	
	
	/**
	 * 到搜索页面///////作废了。
	 */
	public void toSearch() {
		String step = getPara("step");
		String sex = getPara("sex");
		setSessionAttr("sex", sex);
		String style = getSessionAttr("style");
		if (null != style && style.equals("非运动")) {
			if (null != step && step.equals("1")) {
				style = "运动";// 商品类型为非运动，且这是选第一个品牌，则为运动
			} else {
				style = "非运动";// 第二三个为非运动
			}
		} else {
			style = "运动";// 商品类型为运动，则三种全运动
		}
		List<Logo> list = Logo.dao
				.find("SELECT l.id,l.name,s.sex,s.style from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and s.sex="
						+ sex + " and s.style='" + style + "' group by l.id");
		List<Logo> hotlist = Logo.dao
				.find("SELECT l.id,l.name,s.sex,s.style from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and s.sex="
						+ sex + " and s.style='" + style + "' group by l.id order by sort desc limit 9 ");

		String logoid1 = getSessionAttr("logo1");
		String logoid2 = getSessionAttr("logo2");
		String logoid3 = getSessionAttr("logo3");
		String size1 = getSessionAttr("size1");
		String size2 = getSessionAttr("size2");
		String size3 = getSessionAttr("size3");
		if (step.equals("1")) {
			setAttr("alogo", logoid1);
			setAttr("asize", size1);
		} else if (step.equals("2")) {
			setAttr("alogo", logoid2);
			setAttr("asize", size2);
		} else if (step.equals("3")) {
			setAttr("alogo", logoid3);
			setAttr("asize", size3);
		}
		setAttr("step", step);
		setAttr("list", list);
		setAttr("hotlist", hotlist);
		render("frontpage/search.html");
	}

	public void toRecentTest() {
		render("frontpage/recenttest.html");
	}

	public String getuuid(HttpServletRequest request) {
		return request.getRemoteAddr() + request.getRemoteHost();
	}

	/**
	 * ltt
	 */
	public void toBuyerIndex(){
		String productid = getSessionAttr("productid");
		String foottype= getPara("foottype");
		setSessionAttr("foottype", getPara("foottype"));//选择的脚型
		Usize usize=Usize.dao.findFirst("select * from u_size where product_id='"+productid+"'");
		
		String sex = usize.get("sex").toString();
		String style = usize.get("style").toString();
		
		List<Logo> list = Logo.dao.find("SELECT l.id,l.en_name,l.name from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and s.sex="
				+ sex + " and s.style='运动' group by l.id");
		setAttr("sex",sex);
		setAttr("list", list);//鞋子品牌列表
		if (null != style && style.equals("运动")) {
			setAttr("style", "1");
		} else {
			style = "非运动";
			setAttr("style", "2");
		}
		render("frontpage/buyerindex.html");
	}
	/**
	 * 根据鞋子类型检索出所有鞋子
	 */
	public void getShoesByType(){
		String type=getPara("type");
		String sex=getSessionAttr("sex");
		List<Logo> list=new ArrayList<Logo>();
		if(type.equals("1")){
			list = Logo.dao.find("SELECT l.id,l.en_name,l.name from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and s.sex="
					+ sex + " and s.style='运动' group by l.id");
		}else{
			list = Logo.dao.find("SELECT l.id,l.en_name,l.name from d_logo l left join d_size s on l.id=s.logo_id where l.state=1 and s.sex="
					+ sex + " and s.style='非运动' group by l.id");
		}
		renderText(JsonKit.toJson(list));
	}
}
